#include<iostream>
#include<vector>
#include<queue>
#include<cstring>
#include<cmath>
#include<map>
#include<set>
#include<cstdio>
#include<algorithm>
#define debug(a) cout<<#a<<"="<<a<<endl;
using namespace std;
const int maxn=600;
typedef int LL;
char str[maxn][maxn];
LL sum[maxn][maxn];
LL n,m;
void init(){
    for(LL i=0;i<n+10;i++){
        for(LL j=0;j<m+10;j++){
            str[i][j]='0';
        }
    }
    memset(sum,0,sizeof(sum));
}
bool check(LL stx,LL sty,LL edx,LL edy){
    if(stx<1||stx>n||sty<1||sty>m||edx<1||edx>n||edy<1||edy>m) return false;
    else return true;
}
bool cal(LL stx,LL sty,LL edx,LL edy){
    ///for(LL j=sty;j<=edy;j++){
     ///   if(str[stx][j]!='*') return false;
    ///}
    ///cout<<"stx="<<stx<<"   sty="<<sty<<"   edx="<<edx<<"   "<<"edy="<<edy<<endl;
    if(sum[stx][edy]-sum[stx][sty-1]==(edy-sty+1)) return true;
    ///cout<<"fuck"<<endl;
    return false;

}
void prework(){
    for(LL i=1;i<=n;i++){
        for(LL j=1;j<=m;j++){
            if(str[i][j]=='*') sum[i][j]=sum[i][j-1]+1;
            else sum[i][j]=sum[i][j-1];
        }
    }
}
int main(void)
{
  cin.tie(0);std::ios::sync_with_stdio(false);
  LL t;cin>>t;
  while(t--){
    cin>>n>>m;
    init();
    LL ans=0;
    for(LL i=1;i<=n;i++){
        for(LL j=1;j<=m;j++){
            cin>>str[i][j];
            if(str[i][j]=='*') ans++;
        }
    }
    prework();
    for(LL i=1;i<=n;i++){
        for(LL j=1;j<=m;j++){
            if(str[i][j]!='*') continue;
            LL stx,sty,edx,edy;
            stx=i+1;sty=j-1;edx=i+1;edy=j+1;
            while( check(stx,sty,edx,edy)==1&&cal(stx,sty,edx,edy)==1 ){
                ans++;
                stx=stx+1;sty=sty-1;
                edx=edx+1;edy=edy+1;
            }
        }
    }
    cout<<ans<<endl;
  }
return 0;
}
